package com.flower8.dao;

import com.flower8.model.Agent;
import com.flower8.model.AgentExport;
import com.flower8.model.ExportData;
import com.flower8.utils.PageData;

import java.util.List;
import java.util.Map;

/**
 * @Description:
 * @Author: tanglin
 * @Date: 2020/5/21 11:31
 * @Version: 1.0
 */
public interface AgentDao {

    /**
     * 根据账号id查询
     * @param id
     * @return
     * @throws Exception
     */
    Agent getById(long id)throws Exception;

    /**
     * 根据账号查询
     * @param account
     * @return
     * @throws Exception
     */
    Agent getUser(String account)throws Exception;

    /**
     * 根据推广码查询
     * @param code
     * @return
     * @throws Exception
     */
    Agent getByCode(String code)throws Exception;

    /**
     * 查询渠道商列表
     * @param param
     * @return
     * @throws Exception
     */
    List<Map> getAgentList(Map param)throws Exception;

    /**
     * 查询渠道商列表总数
     * @param param
     * @return
     * @throws Exception
     */
    int getAgentListCount(Map param)throws Exception;

    /**
     * 修改渠道商信息
     * @param param
     * @throws Exception
     */
    void updateAgentInfo(Map param)throws Exception;

    /**
     * 新增渠道商
     * @param param
     * @throws Exception
     */
    void addAgent(Map param)throws Exception;

    /**
     * 删除渠道商
     * @param id
     * @throws Exception
     */
    void deleteAgent(long id)throws Exception;

    /**
     * 查询所有渠道商
     * @return
     * @throws Exception
     */
    List<Agent> getAllAgent()throws Exception;

    /**
     * 查询渠道商最大的渠道号
     * @param code
     * @return
     * @throws Exception
     */
    long getMaxChannelByCode(String code)throws Exception;

    /**
     * 查询渠道号列表
     * @param param
     * @return
     * @throws Exception
     */
    List<Map> getAgentChannelList(Map param)throws Exception;

    /**
     * 查询渠道号列表总数
     * @param param
     * @return
     * @throws Exception
     */
    int getAgentChannelCount(Map param)throws Exception;

    /**
     * 新增渠道号
     * @param param
     * @throws Exception
     */
    void addAgentChannel(Map param)throws Exception;

    /**
     * 删除渠道号
     * @param id
     * @throws Exception
     */
    void delAgentChannel(long id)throws Exception;

    /**
     * 通过id查询渠道号信息
     * @param id
     * @return
     * @throws Exception
     */
    Map getChannelById(long id)throws Exception;

    /**
     * 查询统计数据
     * @param pd
     * @return
     * @throws Exception
     */
    public List<Map> getStaticTotal(PageData pd) throws Exception;

    /**
     * 查询统计数据总数
     * @param pd
     * @return
     * @throws Exception
     */
    public int getStaticTotalCount(PageData pd) throws Exception;

    /***
     * 导出数据
     * @param pd
     * @return
     * @throws Exception
     */
    List<ExportData> exportData(Map pd)throws Exception;

    /**
     * 查询脱敏数据列表
     * @return
     * @throws Exception
     */
    List<Map> getDetailList(Map pd)throws Exception;

    /**
     * 查询脱敏数据列表总数
     * @return
     * @throws Exception
     */
    int getDetailListCount(Map pd)throws Exception;

    /**
     * 导出脱敏数据
     * @param pd
     * @return
     * @throws Exception
     */
    List<AgentExport> exportRegisterData(PageData pd)throws Exception;

    /**
     * 查询中注册数和实名数
     * @param agentId
     * @return
     * @throws Exception
     */
    Map getTotal(Long agentId)throws Exception;
}
